package leetcode8;

public class test37 {
    /**
     * 543. 二叉树的直径
     */
    public int res = 0;  // 用 res 来存储结果
    public int diameterOfBinaryTree(TreeNode root) {
        recur(root);  // 递归计算
        return res;   // 返回结果
    }

    public int recur(TreeNode root) {
        if (root == null) return -1;  // 空节点返回 -1
        int l = recur(root.left) + 1;  // 计算左子树链长
        int r = recur(root.right) + 1; // 计算右子树链长
        res = Math.max(res, l + r);    // 更新最大直径，使用 res 代替 ans
        return Math.max(l, r);         // 返回当前节点的最长链长
    }
}
